filtr podle numericke hodnoty

Otázka od: Lada

11. 11. 2004 2:02

Zdravim vsechny,

zejmena ty kdoz mi kdy pomohli.. mam problem..
Po delsi dobe jsem se opet dostal k ponekud zacatecnickemu badani a
nemuzu za boha prijit na to, jak v tabulce efektivne filtrovat podle
ciselne hodnoty..
Potrebuju nastavit dotaz tak, abych pri zadani ciselne hodnoty v
'editCastka' dostal v pripade zadani napr.

'25' - pouze hodnoty v radu desitek (vcetne desetinnych mist)
'250' - pouze hodnoty v radu stovek (vcetne desetinnych mist) atd...

muj kod filtruje zaznamy pouze na vyskyt znaku.. tudiz samozrejme
ignoruje rady... Nicmene more pokusu s
'IBQuery1.ParamByName('p4').AsInteger:= ...' jsem podniknul.. zkratka uz
nevim.. Muj kod:
(jde mi o parametr p4...)

procedure TForm1.editCastkaChange(Sender: TObject);
begin

  IBQuery1.SQL.Clear;
  
IBQuery1.SQL.Add('Select Datum, Firma, VS, Castka, Cislouctu, Banka,
NV_VP,'+
                   'ID from Vypisy');
  IBQuery1.SQL.Add('Where (UPPER (Firma Collate PXW_CSY) LIKE :p1) and'+
                         '(UPPER (VS Collate PXW_CSY) LIKE :p2) and'+
                         '(UPPER (Cislouctu Collate PXW_CSY) LIKE :p3) and'+
                         '(Castka LIKE :p4) Order by Datum, Firma');

  IBQuery1.ParamByName('p1').AsString :=
'%'+AnsiUpperCase(editFirma.Text)+'%';
  IBQuery1.ParamByName('p2').AsString := '%'+AnsiUpperCase(editVS.Text)+'%';
  IBQuery1.ParamByName('p3').AsString := '%'+AnsiUpperCase(editCU.Text)+'%';
  IBQuery1.ParamByName('p4').AsString := editCastka.Text + '%';

  IBQuery1.Active := true;

end;

Za kazdou radu moc dekuju a podle situace preju dobrou noc, nebo krasnej
den!

Lada



Odpovedá: Lada

11. 11. 2004 2:24

Lada napsal(a):

>Zdravim vsechny,
>
>zejmena ty kdoz mi kdy pomohli.. mam problem..
>Po delsi dobe jsem se opet dostal k ponekud zacatecnickemu badani a
>nemuzu za boha prijit na to, jak v tabulce efektivne filtrovat podle
>ciselne hodnoty..
>Potrebuju nastavit dotaz tak, abych pri zadani ciselne hodnoty v
>'editCastka' dostal v pripade zadani napr.
>
>'25' - pouze hodnoty v radu desitek (vcetne desetinnych mist)
>'250' - pouze hodnoty v radu stovek (vcetne desetinnych mist) atd...
>
>muj kod filtruje zaznamy pouze na vyskyt znaku.. tudiz samozrejme
>ignoruje rady... Nicmene more pokusu s
>'IBQuery1.ParamByName('p4').AsInteger:= ...' jsem podniknul.. zkratka uz
>nevim.. Muj kod:
>(jde mi o parametr p4...)
>
>procedure TForm1.editCastkaChange(Sender: TObject);
>begin
>
> IBQuery1.SQL.Clear;
>
IBQuery1.SQL.Add('Select Datum, Firma, VS, Castka, Cislouctu, Banka,
>NV_VP,'+
> 'ID from Vypisy');
> IBQuery1.SQL.Add('Where (UPPER (Firma Collate PXW_CSY) LIKE :p1) and'+
> '(UPPER (VS Collate PXW_CSY) LIKE :p2) and'+
> '(UPPER (Cislouctu Collate PXW_CSY) LIKE :p3) and'+
> '(Castka LIKE :p4) Order by Datum, Firma');
>
> IBQuery1.ParamByName('p1').AsString :=
>'%'+AnsiUpperCase(editFirma.Text)+'%';
> IBQuery1.ParamByName('p2').AsString := '%'+AnsiUpperCase(editVS.Text)+'%';
> IBQuery1.ParamByName('p3').AsString := '%'+AnsiUpperCase(editCU.Text)+'%';
> IBQuery1.ParamByName('p4').AsString := editCastka.Text + '%';
>
> IBQuery1.Active := true;
>
>end;
>
>Za kazdou radu moc dekuju a podle situace preju dobrou noc, nebo krasnej
>den!
>
>Lada
>

Moc se omlouvam za pokracovani meho mikroproblemu.. ale zapomel jsem
dodat, ze v DB je pole 'Castka' typu Numeric(6,2)

a hraju si s FB1.5 v D6

Diky,

Lada

Odpovedá: Jan Novak

13. 11. 2004 11:51

> '(Castka LIKE :p4) Order by Datum, Firma');

> IBQuery1.ParamByName('p4').AsString := editCastka.Text + '%';

> v DB je pole 'Castka' typu Numeric(6,2)

Bud ten parametr davej .AsFloat, nebo v SQL prikazu hodnotu pole
'Castka' explicitne preved na retezec. Umi tvuj databazovy stroj
pouzit LIKE na Numeric?